package com.example.app.converter;

import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;

import java.util.List;

/**
 * 基础转换器接口
 */
public interface BaseConverter<E, D> {
    
    /**
     * Entity转DTO
     */
    D toDto(E entity);
    
    /**
     * DTO转Entity
     */
    E toEntity(D dto);
    
    /**
     * Entity列表转DTO列表
     */
    List<D> toDtoList(List<E> entityList);
    
    /**
     * DTO列表转Entity列表
     */
    List<E> toEntityList(List<D> dtoList);
    
    /**
     * 更新Entity
     */
    @Mapping(target = "id", ignore = true)
    @Mapping(target = "createTime", ignore = true)
    @Mapping(target = "createBy", ignore = true)
    void updateEntity(D dto, @MappingTarget E entity);
}